package pl.wr.physics.units.planck;

import pl.wr.math.Component;
import pl.wr.math.number.Fraction;
import pl.wr.physics.units.AbstractUnit;
import pl.wr.physics.units.SI.base.K;
import pl.wr.physics.units.SI.base.kg;
import pl.wr.physics.units.SI.base.m;
import pl.wr.physics.units.SI.base.s;
import pl.wr.physics.units.SI.derived.C;

/**
 * Definitions of Planck units
 * 
 * @version 1.0
 * @author wieslaw.rodak
 * 
 */
public interface PlanckSIValues extends Component {

	/**
	 * The SI value of a unit = 1.616 199(97) × 10<sup>-35</sup> m
	 */
	m LENGTH = new m(new Fraction(1.616199, -35, 97));
	/**
	 * The SI value of a unit = 2.176 51(13) × 10<sup>-8</sup> kg
	 */
	kg MASS = new kg(new Fraction(2.17651, -8, 13));
	/**
	 * The SI value of a unit = 5.391 06(32) × 10<sup>-44</sup> s
	 */
	s TIME = new s(new Fraction(5.39106, -44, 32));
	/**
	 * The SI value of a unit = 1.416 833(85) × 10<sup>32</sup> K
	 */
	K TEMPERATURE = new K(new Fraction(1.416833, 32, 85));
	/**
	 * The SI value of a unit = 1.875545956(41) × 10<sup>-18</sup> C
	 */
	C CHARGE = new C(new Fraction(1.875545956, -18, 41));

	/**
	 * @return return SI representation of Planck value
	 */
	AbstractUnit getSIValue();

}
